Automatic code generation is a process whereby software source code is automatically produced from a graphical model. The software source code produced by the automatic code generation process may be compiled and then executed on a digital computer or other electronic device implementing the functionality specified by the model. The graphical model being studied may contain many different types of data references. Data may be used to represent the states of the system, as well as the flow of matter, energy, or information between system components. Each item of data in the model is defined to have a data storage class. Data is in turn represented in the generated software source code in a manner that is prescribed by its storage class. The software source code references data in a number of different ways including defining data, declaring data, initializing data, reading a value of data, assigning the value of data, and the choice of storage class controls how each of these references are generated.
Code generators may provide predefined sets of storage classes, and they may also permit the user to define new, custom storage classes with user-defined characteristics. The custom storage class provides a central point for software code generation of a set of objects since changes to the unique set of instructions defining a custom storage class collectively apply to the (potentially large) set of data of that class. Common software engineering practices that may be enabled with custom storage classes include embedding a data item in a bit field, embedding a data item in a structure, embedding a data item in a union, using platform-specific declarations in the data declaration, defining the scope and storage of the data, declaring data using arbitrary C types, and accessing data through function calls.
Unfortunately, it is often difficult to create a custom storage class. Conventional methods of creating custom storage classes for use with an automatic code generator require the use of programmatic callbacks that interface to the lower levels of the code generator architecture. The writing of the programmatic callbacks requires an in-depth knowledge of the workings of the automatic code generator. The required level of knowledge regarding the automatic code generator is often lacking for many users as is the desire to write the programmatic callbacks.